package com.easytool.utils;

import com.baidu.aip.ocr.AipOcr;
import com.jfinal.kit.PropKit;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * 百度文字识别
 *
 * @author liupengtao
 * @date 2019/12/18
 */
public class BaiDuOcrUtil {

    /**
     * 通用文字识别
     * @param imgPath
     * @return
     */
    public static JSONObject basicGeneral(String imgPath){

        AipOcr client = AipOcrClient.getInstance();

        //设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);

        JSONObject res = client.basicGeneral(imgPath, new HashMap<>(16));
        return res;
    }

}

/**
 * 单例构造api客户端
 */
class AipOcrClient{

    private static final String APP_ID = PropKit.get("baidu.appId");
    private static final String API_KEY = PropKit.get("baidu.appKey");
    private static final String SECRET_KEY = PropKit.get("baidu.secretKey");

    /**
     * 类级的内部类，也就是静态的成员式内部类，该内部类的实例与外部类的实例
     * 没有绑定关系，而且只有被调用到才会装载，从而实现了延迟加载
     */
    private static class SingletonHolder{
        /**
         * 静态初始化器，由JVM来保证线程安全
         */
        private static AipOcr instance = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
    }

    /**
     * 私有化构造方法
     */
    private AipOcrClient(){ }
    public static AipOcr getInstance(){
        return SingletonHolder.instance;
    }
}
